package fsmCore;

public class TransizioneSincrona extends Transizione {


	private static final long serialVersionUID = -3181412770959949469L;
	private ClasseEquivalenza classeEq;

	//@requires non_null classeEq && non_null sorgente && non_null nome && non_null destinazione
	public TransizioneSincrona(Stato sorgente, Stato destinazione, String nome, ClasseEquivalenza classeEq){
		super(sorgente,destinazione,nome); 
		this.classeEq=classeEq;
		
		// setto la durata in base alla classe eq
		setDurata(classeEq.getDurata());
		setDurataresidua(getDurata());
	}
	

	public ClasseEquivalenza getClasseEq() {
		return classeEq;
	}

	//@ requires non_null classeEq
	public void setClasseEq(ClasseEquivalenza classeEq) {
		this.classeEq = classeEq;
	}
	
	public String toString(){
		return getNome();
	}
	
	// tostring dettagliato
	public String toStringDet(){
		String result="Nome transizione: " + getNome() + "\nTipo transizione: Sincrona\n" + "Nome stato sorgente: " + getSorgente().getNome() + "\nNome stato destinazione: " + getDestinazione().getNome()  
		+ "\nDurata transizione: " + getDurata() + " secondi.\n"; 
		
		return result;
	}
	
	public boolean sincrona(){
		return true;
	}
}
